/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package entidades;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author BATAQUERO
 */
@Entity
@Table(name = "seguimiento_informe_mensual")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "SeguimientoInformeMensual.findAll", query = "SELECT s FROM SeguimientoInformeMensual s"),
    @NamedQuery(name = "SeguimientoInformeMensual.findByIdSeguimientoMensual", query = "SELECT s FROM SeguimientoInformeMensual s WHERE s.idSeguimientoMensual = :idSeguimientoMensual"),
    @NamedQuery(name = "SeguimientoInformeMensual.findByAceptacionPracticante", query = "SELECT s FROM SeguimientoInformeMensual s WHERE s.aceptacionPracticante = :aceptacionPracticante"),
    @NamedQuery(name = "SeguimientoInformeMensual.findByAceptacionSupervisorEnt", query = "SELECT s FROM SeguimientoInformeMensual s WHERE s.aceptacionSupervisorEnt = :aceptacionSupervisorEnt"),
    @NamedQuery(name = "SeguimientoInformeMensual.findByMaxId", query = "SELECT max(s.idSeguimientoMensual) FROM SeguimientoInformeMensual s"),
    @NamedQuery(name = "SeguimientoInformeMensual.findByConvenioEdicionFormato", query = "SELECT s FROM SeguimientoInformeMensual s WHERE s.convenioXPeriodoXEstudiante = :convenioXPeriodoXEstudiante AND s.edicionFormato = :edicionFormato")})
public class SeguimientoInformeMensual implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @NotNull
    @Column(name = "idSeguimientoMensual")
    private Integer idSeguimientoMensual;
    @Size(max = 12)
    @Column(name = "aceptacionPracticante")
    private String aceptacionPracticante;
    @Size(max = 12)
    @Column(name = "aceptacionSupervisorEnt")
    private String aceptacionSupervisorEnt;
    @Basic(optional = false)
    @NotNull
    @Column(name = "fechaInicial")
    @Temporal(TemporalType.DATE)
    private Date fechaInicial;
    @Basic(optional = false)
    @NotNull
    @Column(name = "fechaFinal")
    @Temporal(TemporalType.DATE)
    private Date fechaFinal;
    @Size(max = 50)
    @Column(name = "proyecto")
    private String proyecto;
    @Size(max = 50)
    @Column(name = "empresa")
    private String empresa;
    @Basic(optional = false)
    @NotNull
    @Column(name = "edicionFormato")
    private boolean edicionFormato;
    @JoinColumns({
        @JoinColumn(name = "idConvenioPeriodo", referencedColumnName = "idConvenioPeriodo"),
        @JoinColumn(name = "idEstudiante", referencedColumnName = "idEstudiante")})
    @ManyToOne(optional = false)
    private ConvenioXPeriodoXEstudiante convenioXPeriodoXEstudiante;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idSeguimientoMensual")
    private List<DetalleSeguimientoMensual> detalleSeguimientoMensualList;

    public SeguimientoInformeMensual() {
    }

    public SeguimientoInformeMensual(Integer idSeguimientoMensual) {
        this.idSeguimientoMensual = idSeguimientoMensual;
    }

    public Integer getIdSeguimientoMensual() {
        return idSeguimientoMensual;
    }

    public void setIdSeguimientoMensual(Integer idSeguimientoMensual) {
        this.idSeguimientoMensual = idSeguimientoMensual;
    }

    public String getAceptacionPracticante() {
        return aceptacionPracticante;
    }

    public void setAceptacionPracticante(String aceptacionPracticante) {
        this.aceptacionPracticante = aceptacionPracticante;
    }

    public String getAceptacionSupervisorEnt() {
        return aceptacionSupervisorEnt;
    }

    public void setAceptacionSupervisorEnt(String aceptacionSupervisorEnt) {
        this.aceptacionSupervisorEnt = aceptacionSupervisorEnt;
    }

    public ConvenioXPeriodoXEstudiante getConvenioXPeriodoXEstudiante() {
        return convenioXPeriodoXEstudiante;
    }

    public void setConvenioXPeriodoXEstudiante(ConvenioXPeriodoXEstudiante convenioXPeriodoXEstudiante) {
        this.convenioXPeriodoXEstudiante = convenioXPeriodoXEstudiante;
    }

    @XmlTransient
    public List<DetalleSeguimientoMensual> getDetalleSeguimientoMensualList() {
        return detalleSeguimientoMensualList;
    }

    public void setDetalleSeguimientoMensualList(List<DetalleSeguimientoMensual> detalleSeguimientoMensualList) {
        this.detalleSeguimientoMensualList = detalleSeguimientoMensualList;
    }

    public Date getFechaInicial() {
        return fechaInicial;
    }

    public void setFechaInicial(Date fechaInicial) {
        this.fechaInicial = fechaInicial;
    }

    public Date getFechaFinal() {
        return fechaFinal;
    }

    public void setFechaFinal(Date fechaFinal) {
        this.fechaFinal = fechaFinal;
    }

    public String getProyecto() {
        return proyecto;
    }

    public void setProyecto(String proyecto) {
        this.proyecto = proyecto;
    }

    public String getEmpresa() {
        return empresa;
    }

    public void setEmpresa(String empresa) {
        this.empresa = empresa;
    }

    public boolean isEdicionFormato() {
        return edicionFormato;
    }

    public void setEdicionFormato(boolean edicionFormato) {
        this.edicionFormato = edicionFormato;
    }
    
    

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idSeguimientoMensual != null ? idSeguimientoMensual.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof SeguimientoInformeMensual)) {
            return false;
        }
        SeguimientoInformeMensual other = (SeguimientoInformeMensual) object;
        if ((this.idSeguimientoMensual == null && other.idSeguimientoMensual != null) || (this.idSeguimientoMensual != null && !this.idSeguimientoMensual.equals(other.idSeguimientoMensual))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "entidades.SeguimientoInformeMensual[ idSeguimientoMensual=" + idSeguimientoMensual + " ]";
    }
    
}
